题目描述
1 | 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 |
解题思路一
时间复杂度要O(log n) ,那么就不能直接用遍历了。遍历是O(n)
其实一个无序的序列,查找的最小时间复杂度就是O(n)
但是,根据题意,原序列为升序序列,那么旋转后的序列其实是两个有序的序列的拼接,且没有交集。
我的思路是找到旋转点,然后分别使用二分法查找。二分法的时间复杂度就是O(log n)。
寻找旋转点同样使用二分法。
寻找旋转点时,左右序列都要包含mid,进行判断,否则会出现正好在旋转点处分割左右序列的情况。
这样的方法时间复杂度为O(2 log n) 应该还是符合题意的。
题解一:
1 | /** |